简而言之,Ruff 是一套软件,树莓派是一个硬件,只不过,Ruff 是为了开发硬件应用而设计的。
从设计初衷谈起
Ruff 是为了开发应用而设计,所以,其目标用户是开发者。
树莓派最初是为了教学目的提供的小电脑,其目标用户是初接触电脑的使用者。
正是设计目的的差异,Ruff 的工作都是为了改善开发者体验,比如,其提供的软件包管理、自动化测试框架、命令行工具等等。而树莓派需要使用者像拿到一台新电脑一样,配置操作系统,安装软件等等。
二者之所以会被放在一起比较,主要是因为有一些开发者在尝试用树莓派做硬件应用,这些人通常是软件极客,所以,他们也是 Ruff 的目标用户。
抛开把树莓派当做电脑的用途,这里只谈硬件应用开发的部分。
开发对比
如果要用树莓派做开发,你要做的是寻找相应的软件开发包,然后,学习硬件编程的概念,比如:GPIO、I2C 等等,还要阅读数据手册,学习编写驱动,然后,才有可能开始自己的应用开发。
用 Ruff 做开发,你要做的是找到自己要用的外设,在命令行里添加外设,编写自己的应用。
你已经看出了其中的差异,如果你是一个没有硬件背景的人,显然,Ruff 上手更快,这是因为 Ruff 提供了一层软件抽象。软件开发者都会知道一个好的抽象对于生产力的提升。正是因为抽象,才有了从机器码到汇编、到 C 语言、到面向对象等一系列进步。
此外,Ruff 还提供了一系列配套工具,比如,前面提到的软件包管理、自动化测试框架、命令行工具等方面,让你可以做一个正式的开发,而不仅仅做一个玩具。
硬件对比
其实,Ruff 不是一个硬件,但 Ruff 有一个开发套件,用以降低开发人员上手的门槛。
从硬件配置上说,树莓派是有绝对优势的,Ruff 开发套件要弱一些。二者的差异恰好回应了设计初衷的差异。树莓派要做电脑,如果太弱了,很多功能做不了,而 Ruff 开发套件是为了做硬件应用,太强了反而不能体现真实的场景。
Ruff 的设计就有一个重要目标:进军生产。众所周知,在真正的硬件开发中,成本是一个重要的因素,而硬件配置和成本密切相关。
Ruff 开发套件如果性能太强,它就不会在真实场景落地。举个例子,如果采用树莓派做为起点,有可能 JavaScript 运行时会选择 Node.js,而 Node.js 是很难向更小的硬件上移植的。具体分析如下:
Duktape 和 V8有什么区别,为什么做的这么小? - 郑晔的回答
目前,Ruff 的研发正在朝着生产环境前进,比如,基于 MCU 的版本,这个版本的芯片和内存将更小,但这也更贴近真实的环境。
最后,如果你有树莓派,保留好,Ruff 很快就能够运行在树莓派上。因为 Ruff 是一套软件,树莓派是一个硬件,而 Ruff 是为了开发硬件应用而设计的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。